package com.kjlink.widget.monitoring.processor;

import com.kjlink.widget.monitoring.constant.MonitorConstant;
import com.kjlink.widget.monitoring.model.MonitorDataModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.redis.core.StringRedisTemplate;

/**
 * 描述:
 *
 * @author Vic.xu
 * @since 2025-08-01 15:47
 */
public abstract class BaseMonitorEventProcessor {

    protected Logger logger = LoggerFactory.getLogger(getClass());

    /**
     * redisTemplate : 发送和消费使用同一个 redis
     */
    protected StringRedisTemplate stringRedisTemplate;

    /**
     * 每个事件记录在redis中的时间: 单位 秒
     */
    protected int ttl;




    public BaseMonitorEventProcessor(StringRedisTemplate stringRedisTemplate) {
        this.stringRedisTemplate = stringRedisTemplate;
        this.ttl = MonitorConstant.DEFAULT_TTL;
    }

    /**
     * 每个事件记录在redis中的时间: 单位 秒
     */
    public void setTtl(int ttl) {
        this.ttl = ttl;
    }

    public int getTtl() {
        return ttl;
    }

    /**
     * 构建 key: monitor:{eventType}:{eventId}
     *
     * @param data
     * @return
     */
    public static String buildKey(MonitorDataModel data) {
        return String.format(MonitorConstant.KEY_FORMAT, data.getEventType().name(), data.getEventId());
    }

}
